package com.zhangye.test.controller;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.json.JSONException;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import com.alibaba.fastjson.JSON;
import com.google.zxing.WriterException;
import com.zhangye.test.model.Admin;
import com.zhangye.test.model.Category;
import com.zhangye.test.model.Proxy;
import com.zhangye.test.model.ProxyCompany;
import com.zhangye.test.model.ProxyQrCode;
import com.zhangye.test.util.PageInfo;
import com.zhangye.test.util.Result;


/**
 * 代理列表
 * 作者： 张叶
 * 创建时间：2018年10月9日  上午11:38:20
 */
@Controller
@RequestMapping("admin/proxyQrCode")
public class ProxyQrCodeController extends BaseController{

	
	/**
	 * ar列表
	 * 作者： 张叶
	 * 创建时间：2018年5月11日  下午2:02:28
	 */
	@RequestMapping("/list")
	public String list(Model model,HttpServletRequest request){
		Admin admin = adminService.getCurrent();
		if(admin.getProxyCompanyId() == null || "".equals(admin.getProxyCompanyId())){
			if(admin.getProxyId() != null && !"".equals(admin.getProxyId())){
				//总代理登录，显示代理公司
				String where = " and status = 'on' and proxy_id = " + admin.getProxyId();
				List<ProxyCompany> list = proxyCompanyService.selectWhere(where);
				model.addAttribute("proxyCompany",list);
			}else{
				List<Proxy> list = proxyService.selectWhere("");
				model.addAttribute("proxyList",list);
			}
		}
		return "admin/proxyQrCode/list";
	}

	
	/**
	 * 分页显示 
	 * 作者：张叶 
	 * 时间：2016年9月7日 上午11:58:15
	 */
	@ResponseBody
	@RequestMapping(value = "qrCodeJson", method = RequestMethod.POST)
	public JSON qrCodeJson(PageInfo pageInfo, Integer rows, Integer page,
			String sidx, String sord, Model model, String aName,
			Long proxy,Long proxyId) {
		// 分页信息
		if (pageInfo == null) {
			pageInfo = new PageInfo();
		}
		if (pageInfo.getPage() < 2
				|| pageInfo.getPage() >= pageInfo.getTotalPage()) {
			pageInfo.setCount(0);
		}
		if (rows != null) {// 每页显示条数
			pageInfo.setPageSize(rows);
		}
		if (page != null) {// 当前页
			pageInfo.setPage(page);
		}

		// 排序
		String order = " order by created_at desc";
		if (sidx != null && sidx != "") {// 排序字段
			order = " order by " + sidx + " ";
			if (sord != null && sord != "") {// 排序
				order += sord;
			}
		}

		// 搜索条件
		String where = "1 = 1";
		Admin admin = adminService.getCurrent();
		if(aName != null && !"".equals(aName)){
			where += " and name like '%" + aName + "%'";
		}
		
		if(proxyId != null && !"".equals(proxyId)){//具体到代理公司
			where += " and admin_id in (select id from admin where proxy_company_id = " + proxyId + ")";
		}else if (proxy != null && !"".equals(proxy)){//总代理
			where += " and admin_id in (select id from admin where proxy_id = " + proxy + ")";
		}else{
			if(admin.getProxyCompanyId() != null && !"".equals(admin.getProxyCompanyId())){
				where += " and admin_id = " + admin.getId();	
			}else if (admin.getProxyId() != null && !"".equals(admin.getProxyId())){
				where += " and admin_id in (select id from admin where proxy_id = " + admin.getProxyId() + ")";
			}
		}
		where += " and status != 'deleted'";
		List<Map<String, Object>> list = proxyQrCodeService.selectByPage(pageInfo,where, order);
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		for(int i = 0 ; i < list.size() ; i ++){
			Date createTime = (Date) list.get(i).get("created_at");
			list.get(i).put("created_at", sdf.format(createTime));
			String videoUrl = list.get(i).get("video_url").toString();
			videoUrl = videoUrl.split(",")[0];
			list.get(i).put("video_url", videoUrl);
		}
		Map<String, Object> data = new HashMap<String, Object>();
		data.put("total", pageInfo.getTotalPage());
		data.put("list", list);
		return (JSON) JSON.toJSON(data);
	}

	
	/**
	 * 添加页面
	 * 作者： 张叶
	 * 创建时间：2018年5月11日  下午2:02:36
	 */
	@RequestMapping("/addPage")
	public String addPage(Model model){
		Admin admin = adminService.getCurrent();
		String remark = admin.getRemark();
		if(remark != null && !"".equals(remark)){
			if(remark.equals("test")){//测试账号，只能添加3个
				String where = " and status != 'deleted' and admin_id = " + admin.getId();
				List<ProxyQrCode> list = proxyQrCodeService.selectByWhere(where);
				if(list.size() >= 3){
					model.addAttribute("no","此账号为测试账号，只能添加三个视频，已达上限，无法实现添加操作");
					return "admin/proxyQrCode/errorInsert";
				}
			}
		}
		List<Category> list = categoryService.selectByWhere(" and level = 1");
		model.addAttribute("category",list);
		return "admin/proxyQrCode/add";
	}

	
	/**
	 * 添加功能
	 * 作者： 张叶
	 * 创建时间：2018年5月11日  下午2:06:57
	 * @throws Exception 
	 */
	@ResponseBody
	@RequestMapping(value = "/add", method = RequestMethod.POST)
	public Result add(MultipartFile videoUrls,ProxyQrCode pqc) {
		Result result = new Result();
		result = proxyQrCodeService.add(videoUrls, pqc);
		return result;
	}
	
	
	/**
	 * 删除
	 * 作者： 张叶
	 * 创建时间：2018年5月16日  上午9:57:52
	 */
	@ResponseBody
	@RequestMapping(value = "/delAr/{id}", method = RequestMethod.POST)
	public String delAr(@PathVariable Long id){
		try {
			int i = proxyQrCodeService.deleted(id);
			if(i > 0 ){
				return "success";
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return "fail";
	}

	
	
	/**
	 * 修改页面
	 * 作者： 张叶
	 * 创建时间：2018年5月11日  下午2:07:05
	 */
	@RequestMapping("/updatePage/{id}")
	public String updatePage(@PathVariable("id") Long id,Model model){
		ProxyQrCode ea = proxyQrCodeService.selectByPrimaryKey(id);
		model.addAttribute("ea",ea);
		return "admin/proxyQrCode/update";
	}
	
	
	/**
	 * 修改功能
	 * 作者： 张叶
	 * 创建时间：2018年5月11日  下午2:07:14
	 * @throws IOException 
	 * @throws JSONException 
	 */
	@ResponseBody
	@RequestMapping(value = "/update", method = RequestMethod.POST)
	public String update(ProxyQrCode ea) throws Exception{
		
		try {
			ProxyQrCode e = proxyQrCodeService.selectByPrimaryKey(ea.getId());
			e.setName(ea.getName());
			int i = proxyQrCodeService.update(e);
			if(i == 0 ){
				return "success";
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return "fail";
		
	}

	
	/**
	 * 修改视频
	 * ，判断是否有相似
	 * 作者： 张叶
	 * 创建时间：2018年9月3日  下午2:30:38
	 */
	@ResponseBody
	@RequestMapping(value = "/uploadVideo/{id}", method = RequestMethod.POST)
	public Result uploadVideo(
			@RequestParam(value = "file", required = false) MultipartFile file,
			@PathVariable Long id) throws Exception {
		Result result = new Result();
		ProxyQrCode pqc = proxyQrCodeService.selectByPrimaryKey(id);
		if (pqc != null && !"".equals(pqc)) {
			int i = proxyQrCodeService.updateVideoUrl(id, file);
			if(i > 0){
				result.code = 0;
				result.message = "修改成功";
			}else{
				result.code = 1;
				result.message = "已有相似图片，修改识别图失败";
			}
		}else{
			result.code = 2;
			result.message = "该作品或已被删除，请刷新后重试";
		}
		return result;
	}
	

	/**
	 * 修改视频
	 * ，判断是否有相似
	 * 作者： 张叶
	 * 创建时间：2018年9月3日  下午2:30:38
	 */
	@ResponseBody
	@RequestMapping(value = "/upload/{id}", method = RequestMethod.POST)
	public Result updateFile(
			@RequestParam(value = "file", required = false) MultipartFile file,
			@PathVariable Long id) throws Exception {
		Result result = new Result();
		ProxyQrCode pqc = proxyQrCodeService.selectByPrimaryKey(id);
		if (pqc != null && !"".equals(pqc)) {
			int i = proxyQrCodeService.updateVideoUrl(id, file);
			if(i > 0){
				result.code = 0;
				result.message = "修改成功";
			}else{
				result.code = 1;
				result.message = "已有相似图片，修改识别图失败";
			}
		}else{
			result.code = 2;
			result.message = "该作品或已被删除，请刷新后重试";
		}
		return result;
	}
	
	
	/**
	 * 生成二维码
	 * 作者： 张叶
	 * 创建时间：2019年6月27日  下午2:13:14
	 * @throws WriterException 
	 */
	@ResponseBody
	@RequestMapping("/createQrCode/{id}")
	public Result createQrCode(@PathVariable("id") Long id){
		Result result = new Result();
		result = proxyQrCodeService.createQrCode(id);
		return result;
	}
}
